Apparatus and method for topography dependent signaling

ABSTRACT

Bus communications are optimized by adjusting signal characteristics in accordance with one or more topography dependent parameters. In a bus transmitter, a transmit signal characteristic is adjusted in accordance with a topography dependent parameter. A port in the bus transmitter receives the topography dependent parameter for later use by the parameter adjustment circuitry. The parameter adjustment circuitry adjusts a parameter control signal in accordance with the topography dependent parameter, which is coupled to the output driver. Prior to driving an output signal onto a bus, the output driver adjusts the transmit signal characteristic in accordance with the parameter control signal. In a bus receiver, a receive signal characteristic is adjusted in response to a topography dependent parameter. A port associated with the bus receiver receives the topography dependent parameter and stores it in a register. Parameter adjustment circuitry adjusts a control signal in accordance with the stored topography dependent parameter. An input buffer receives an input signal from a bus coupling the receiver to a transmitter of the input signal. The input buffer generates a first signal from the input signal by adjusting a the parameter of the input signal in accordance with the control signal.

This application is a continuation of patent application Ser. No.09/910,217, filed Jul. 19, 2001, now U.S. Pat. No. 6,516,365, which wasa continuation of patent application Ser. No. 09/420,949, filed Oct. 19,1999 now U.S. Pat. No. 6,321,282.

The present invention relates generally to a bus system, andparticularly to a bus system capable of adjusting signal characteristicsin response to topography dependent parameters.

BACKGROUND OF THE INVENTION

A bus system is a chip-to-chip electronic communications system in whichone or more slave devices are connected to, and communicate with, amaster device through shared bus signal lines. FIG. 1 illustrates inblock diagram form a bus system. The bus system includes a Mastercontrol device (M) that communicates with one or more Slave devices (D)via a bi-directional data bus. Typically, the bi-directional data buscomprises a plurality of bus signal lines, but for simplicity, FIG. 1illustrates only one bus signal line. The terms bus signal line andchannel are used synonymously herein. Thus, it will be understood thatthe data bus includes many channels, one for each bit of data. Each bussignal line terminates on one side at an I/O pin of the master deviceand terminates on its other side at one end of a resistive terminator(T). The resistance of the terminator is closely matched to the loadedimpedance, Z_(L), of the bus signal line to minimize reflections andabsorb signals sent down the bus signal line toward the terminator. Theopposite end of the terminator is connected to a voltage supply thatprovides an AC ground and sets the DC termination voltage of the bussignal line. The positions along the bus signal line tapped by theMaster terminator, and Slaves are labeled p_(M), p_(T), and p₁ - - -p_(N), respectively.

Bus systems are typically designed to work with several configurationsto allow system flexibility. For example, the bus may have severalconnector slots for inserting individual Slaves or Modules of Slaves,and each Module may have different numbers of devices. This allows theuser to change the number of chips that operate in the bus system,allowing small, medium, and large systems to be configured withoutcomplex engineering changes, such as changes to the printed circuitboard layout. FIG. 2 illustrates a Bus System that provides thisflexibility by providing three connectors for three Slave Modules. Thisfigure does not necessarily illustrate the physical layout of an actualsystem, but shows the electrical connections of the Bus System. Thefirst Module is shown with eight Slaves, the second with four Slaves,and the third Modules with no Slaves. The third Module serves only toelectrically connect the terminator to the bus signal line. Forsimplicity, this configuration can be referred to as an 8-4-0configuration, and many other configurations are possible by insertingdifferent Modules into the three connector slots (e.g. 8-8-8, 4-0-0,etc.). As in FIG. 1, FIG. 2 designates the points at which each devicetaps the bus signal line (e.g. Slave B₂ taps the bus signal line atpoint p_(B2)). The Bus System of FIG. 2 is very flexible; however, thisflexibility results in configuration-dependent and position-dependentchannel characteristics that lead to signaling complexities and reducethe reliability of data transmission through the system.

FIG. 3 diagrams structure and electrical properties of a bus signal linein a populated Module of the Bus System of FIG. 2. The portion of thebus signal line that connects to the Slaves forms a repetitive structureof signal line segments and Slaves that can be modeled as a transmissionline of length d, with electrical characteristics as shown. In FIG. 3L_(o) is the inductance per unit length, C_(o) is the capacitance perunit length, G_(p) is the dielectric conductance per unit length, andR_(s) is the conductor resistance per unit length. The lossy, complexcharacteristic impedance of such transmission line is given by:$Z_{OL} = \sqrt{\frac{R_{S} + {j\quad \omega \quad L_{O}}}{G_{P} + {j\omega C}_{1}}}$

However, assuming R_(s) and G_(p) are small, the characteristicimpedance of the bus signal line segment is closely approximated by thesimpler equation Zo={square root over (Lo/Co)}.

FIG. 3 also shows the dominant electrical properties of the Slaves I/Opins where L₁ is the effective input inductance, C₁ is the effectiveinput capacitance, and R₁ is the effective input resistance. This inputresistance incorporates all input losses including metallic, ohmic, andon-chip substrate losses; is frequency dependent; and tends to increasewith frequency. However, assuming that the input capacitance dominatesthe input electrical characteristics of the Slave (i.e.Xc=1/(2πfC₁)>>X_(L)=2πfL₁ and Xc=1/(2πfC₁)>>R₁) at the system operatingfrequency, the effective loaded impedance of the bus signal lines isclosely approximated by:$Z_{L} = \sqrt{\frac{L_{o} \cdot d}{\left( {C_{o} \cdot d} \right) + C_{1}}}$

This equation implies that the lumped capacitance of the Slaves' I/Opins is distributed into the effective impedance of the transmissionlines. However, the repetitive arrangement of Slaves at intervals oflength d along the bus signal line causes the bus signal line to possessa multi-pole low-pass filter characteristic. This lowpass characteristicessentially limits the maximum data transfer rate of the bus system. Thecut-off frequency of the channel increases as the number of devices onthe channel decreases; as the device spacing, d, decreases; and as theinput capacitance, C₁, decreases. FIGS. 4, 5 and 6, illustrate theseeffects. Additionally, dissipative sources of loss such as thedielectric of the bus' printed circuit board substrate, the skin effectresistance of the bus' metal traces, and the slave devices' inputresistances, R₁, also contribute to the low-pass characteristic of thebus signal line, further reducing the usable bandwidth. FIG. 7illustrates this. For any number of Slaves, it is clearly desirable tohave minimum device pitch, d; minimum input capacitance, C₁; and minimumloss (e.g. R₁) for maximum frequency operation of the system.

For these reasons, the device pitch, d, is generally kept at a fixed,minimum practical length which is determined by space limitations andprinted circuit board technology. Likewise input capacitance is kept toa fairly tight, minimum range determined by silicon ESD requirements andprocessing limitations. Losses are also typically controlled within aspecified range. Therefore, although there is some variation in thesethree factors, the major determinant of the channel's response andbandwidth is the configuration and number of devices. This isillustrated in FIG. 8. FIG. 8 illustrates the channel response from theMaster to the last Slave device on the channel (i.e. the forwardtransmission to device D_(N)) for three system configurations, 16-8-8,8-4-0, and 4-0-0. The solid line for each configuration plots thetypical response while the shading around each line indicates the rangeof likely channel responses for that configuration consideringmanufacturing variations in device pitch, input capacitance, and loss(both R₁ and channel losses). FIG. 8 suggests that the channelcharacteristics are largely determined by the system configuration, suchthat transmission of data through Bus System (to the last device)depends strongly on the configuration used (i.e. number and type ofmodules used). Thus, it may be possible to improve the performance ofthe Bus System by adjusting transmitter or receiver parameters inresponse to the particular system configuration that is being used inorder to compensate for the configuration-dependent transmissioncharacteristics.

FIG. 9 illustrates the channel response between the Master and thefirst, middle, and last Slaves in an N-device Bus System. The solidlines in FIG. 9 plot the typical response for the first, middle, and Nthdevice while the shading around each line indicates the range of likelychannel responses for that device position considering manufacturingvariations in device pitch, input capacitance, and loss. FIG. 9 suggeststhat for a given channel configuration, the channel characteristicsbetween the Master and any individual slave is largely determined by theposition of the slave device within the Bus System configuration. Thus,the Bus System performance may be improved between the Master and eachindividual Slave by adjusting certain transmitter or receiver parametersaccording to which Slave is being addressed, thus compensating for theposition-dependent channel characteristics.

FIG. 10 illustrates the channel response between the Master and theSlave on each of three modules of a three-module Bus System. The solidlines of FIG. 10 plot the typical response of the middle device in eachof the three modules while the shading around the line for Module Bindicates the range of channel responses for Slaves on that module. Thisrange of channel responses takes into account manufacturing variationsin device pitch, input capacitance, and loss as well as the range ofphysical positions within the module. The range of channel responses onModule A may overlap the range of channel responses for Module B, andsimilarly the range of channel responses on Module C may overlaps thatof Module B. FIG. 10 suggests that for a given channel configuration,the channel characteristics between the Master and any individual Slaveis largely determined by the Module on which the Slave is located. Thus,it may be possible to improve the performance of the Bus System byadjusting certain transmitter or receiver parameters according to whichModule is being addressed to compensate for the Moduleposition-dependent channel characteristics.

FIGS. 8-10 demonstrate that although Bus Systems with the sameconfiguration have individual differences, electrical characteristicscan generally be associated with each configuration, Module, or Slaveposition. For example, a 4-4-0 Bus System generally has less attenuationthan a 4-8-0 Bus System, therefore, signaling between the Master and anySlave depends on the individual device characteristics, its position inthe Bus System, and the configuration of the Bus System.

FIG. 11 illustrates the effect of position-dependent channelcharacteristics on binary signaling between the master device andvarious slave devices in a system. FIG. 11A shows what a . . . 101010 .. . binary data pattern might look like when it is transmitted at theMaster. The signal at the Master has a fairly large amplitude given bythe equationV_(Swing.M)=(V_(OH.M)−V_(OL.M))=(V_(Term)−V_(OL.M))=(V_(L)+V_(H))_(.M)and has sharp rise and fall times indicated in FIG. 11A as t_(r) andt_(f), respectively. Additionally, the transmitted signal is asymmetricrelative to the reference voltage, _(vref). The amount of asymmetry ismeasured by the equation: ${Asym} = \frac{V_{L} - V_{H}}{V_{L} + V_{H}}$

As the signal propagates down the channel, its shape is altered by thechannel's response. For a low pass channel as shown in FIGS. 4-10, boththe signal's amplitude and edge rate will decrease as it propagates downthe channel. For example, FIG. 11B illustrates what the signal of FIG.11A might look like by the time it reaches the middle Slave, and FIG.11C shows what it may look like by the time it reaches the end of thechannel. The decreased amplitude lowers the Bus System's voltage marginwhereas the slower edge rates decreases the timing margin. FIGS. 11A-11Calso illustrate how voltage asymmetry varies based upon the position ofthe receiving device with respect to the master.

Referring now to FIG. 12A, configuration dependent channelcharacteristics may give rise to an undesired timing skew between clockand data signals as they propagate from the transmitting device (whichmay be the Master or a Slave) to the receiving device (which may be aSlave or the Master). Ideally, data signals should be detected by thereceiving device at a time t1 during the data eye. As used herein, “dataeye” refers to the period, denoted “tbit,” during which valid data is onthe bus between data transition periods. Time t₁ corresponds to thecenter of the data eye and it provides maximum timing margin, ½ tbit,for data detection between data transition periods. When the clocktransition occurs in the center of the data eye, “timing center” is saidto exist. FIG. 12A illustrates this ideal relationship between the datasignal and the receiving device's receive clock signal. A data signaltransmitted so that it aligns ideally with respect to a receivingdevice's receive clock signal may arrive at the receiving device earlyor late with respect to the receiving device's receive clock signal. Insome embodiments, the best data receive time may be at another pointwithin the data eye, other than the center, due to known or predictedcharacteristics of the data channel.

It is well known that channel characteristics introduce undesired timingskew between the receive clock signal and data signals at the time ofdetection that varies as a function of the position of the receivingdevice with respect to the transmitting device and the direction ofsignal transmission. For example, channel characteristics may cause theMaster to read data from Slaves too early in the data eye and may causethe Master to write data to the Slaves too late in the data eye. Howearly or late the Master reads or writes depends upon the systemconfiguration and the location of each Slave relative the master. FIG.12B is a timing diagram illustrating the master's receive clock signaltransition occurring early in the data eye by an error period of δ. FIG.12C is a timing diagram illustrating the Master's transmit clocktransition occurring late in the data eye by an error period of δ.

Corruption of data transmitted via the Bus results not only from staticcharacteristics, but also from data dependent phenomenon such asresidual and cross-coupled signals. Residual signals on the Bus resultfrom past transmissions on the same channel and tend to cause voltagemargins on the channel to vary from one sampling interval to the next.Cross-coupled signals result from inductive coupling of signals onneighboring channels, rather than from past signals on the same channel.Cross-coupled signals also tend to cause voltage margins on the channelto vary from one sampling interval to the next. Herein voltage marginvariations caused by residual signals are referred to as temporalvariations while margin variations caused by cross-coupled signals arereferred to as cross-coupling variations.

FIG. 25 illustrates a bit-stream of 0, 1, 1, 0, transmitted on the Bus,which exhibits the voltage margin variation that can result fromresidual signals. The voltage on the channel rises to V_(HI) duringtransmission of the first logical 0. As, the voltage on the channel doesnot reach V_(LO) during transmission of the first logical 1, insteadreaching a local minimum 200 mV above V_(LO). By contrast, the voltageon the channel drops 100 mV below V_(LO) during transmission of thefinal logical 1. Finally, the voltage on the channel reaches a localmaximum 200 mV below V_(HI) during transmission of the final logical 0.FIG. 25 thus illustrates how an output signal on a channel is affectedby prior transmissions on the same channel. In general, a logical 1 thatfollows a logical 0 is less likely to reach V_(LO) than a logical 1 thatfollows transmission of another logical 1. Similarly, a logical 0 thatfollows a logical 1 is less likely to reach V_(HI) than a logical 0 thatfollows transmission of another logical 0. Both of these effects resultin reduced voltage margins at the receiver, making the Bus System moresusceptible to bit errors caused by noise and other margin-reducingeffects.

To offset some of the channel's corrupting effects on data signals,prior art systems have used a combination of adjustable parameters; e.g.these parameters include: edge or slew rate control and current or swingcontrol. These parameters are typically set to improve communicationwith the last Slave on the channel, and the parameters are then heldconstant no matter which Slave is accessed. This technique often doesimprove the performance of the Bus System. For example, adjusting thecurrent control such that the last Slave on the channel received abalanced, full swing signal certainly improves communication between theMaster and the last Slave. Communication between these two devices mightotherwise be unreliable. However, adjusting the swing such that the lastSlave is improved can corrupt communication between the Master and thefirst few Slaves on the channel. For example, reflections of this large,asymmetric signal at channel discontinuities near the first few Slavescan severely degrade the voltage margin of the first few Slaves,particularly the V_(H) voltage margin. Secondly, the large asymmetry atthe first few Slaves causes duty cycle error since _(VREF) is not at thecenter of the data waveform. This degrades the timing margin at thefirst few devices. Therefore, a need exists for a Bus System thatadjusts its transmitter, channel, and/or receiver parameters to improvecommunication between the Master and any Slave on the channel.

SUMMARY OF THE INVENTION

The apparatus of the present invention improves bus communications byadjusting signal characteristics in response to topography dependentparameters. In a first embodiment as a bus transmitter, the apparatus ofthe present invention adjusts a transmit signal characteristic inresponse to a topography dependent parameter. The bus transmitter of thepresent invention includes a port, a register, parameter adjustmentcircuitry, and an output driver. The port receives a topographydependent parameter, which will be used to adjust a transmit signalcharacteristic. Coupled to the port, the register stores the topographydependent parameter for later use by the parameter adjustment circuitry.The parameter adjustment circuitry responds to the topography dependentparameter by adjusting a parameter control signal, which is coupled tothe output driver. Prior to driving an output signal onto a bus, theoutput driver adjusts the transmit signal characteristic in response tothe parameter control signal.

In a second embodiment as a bus receiver, the apparatus of the presentinvention adjusts a receive signal characteristic in response totopography dependent parameter. The bus receiver of the presentinvention includes a port, a register, parameter adjustment circuitry,and an input buffer. The port receives the topography dependentparameter and stores it in the register. The register couples thetopography dependent parameter to the parameter adjustment circuitry,which responds to it by adjusting a receiver characteristic. The inputbuffer receives an input signal from a bus coupling the receiver to atransmitter of the input signal. The input buffer generates a firstsignal from the input signal by adjusting the receive parameter of theinput signal in accordance with the adjusted receiver characteristic.

BRIEF DESCRIPTION OF THE DRAWINGS

Additional features of the invention will be more readily apparent fromthe following detailed description and appended claims when taken inconjunction with the drawings, in which:

FIG. 1 illustrates a prior Bus System.

FIG. 2 illustrates a prior Bus System that includes multiple connectorsfor Modules of Slaves.

FIG. 3 is a model of the structure and electrical properties of the BusSystem of FIG. 2.

FIG. 4 graphs the channel response of devices in the Bus System of FIG.3 versus the total number of devices.

FIG. 5 graphs the channel response of devices in the Bus System of FIG.3 versus the spacing between devices.

FIG. 6 graphs the channel response of devices in the Bus System of FIG.3 versus device input capacitance.

FIG. 7 graphs the channel response of devices in the Bus System of FIG.3 versus dissipative loss.

FIG. 8 graphs the channel response of devices in the Bus System of FIG.3 versus the number of Modules and their populations.

FIG. 9 graphs the channel response of several devices in the Bus Systemof FIG. 3.

FIG. 10 graphs channel response of modules in the Bus System of FIG. 3.

FIG. 11A graphs the amplitude of a signal at the time of transmission bya Master of Bus System.

FIG. 11B graphs the amplitude of the signal of FIG. 11a at a pointapproximately in the middle of the Bus.

FIG. 11C graphs the amplitude of the signal of FIG. 11a near the end ofthe Bus.

FIG. 12A is a timing diagram illustrating the ideal relationship betweena data signal and a receiving device's receive clock signal.

FIG. 12B is a timing diagram illustrating a receive clock signaltransition occurring early in the data eye by an error period of δ.

FIG. 12C is a timing diagram illustrating a transmit clock transitionoccurring late in the data eye by an error period of δ.

FIG. 13 illustrates a Bus System including the Master Bus Transceiverand Slave Bus Transceiver of the present invention.

FIG. 14 is a flow diagram of a process implemented by the Bus System ofthe present invention to improve signal characteristics in response totopography dependent parameters.

FIG. 15 is a block diagram of an embodiment of a Slave Bus Transceiverof the present invention capable of adjusting several receive andtransmit signal characteristics.

FIG. 16 is a block diagram of an embodiment of the Bus Transmitterassociated with Slave Bus Transceiver of FIG. 15.

FIG. 17 is a schematic diagram of an embodiment of the Duty CycleCompensator associated with the Bus Transmitter of FIG. 16.

FIG. 18 is a schematic diagram of an embodiment of the Predriverassociated with the Bus Transmitter of FIG. 16.

FIG. 19 illustrates schematically an embodiment of the Output CurrentDriver associated with the Bus Transmitter of FIG. 16.

FIG. 20 illustrates schematically an embodiment of the Current/SymmetryControl Circuitry associated with the Bus Transmitter of FIG. 16.

FIG. 21 is a block diagram of an embodiment of the Bus Receiver of theSlave Bus Transceiver of FIG. 15.

FIG. 22 is a block diagram of an embodiment of the Threshold ControlCircuitry associated with the Bus Receiver of FIG. 21.

FIG. 23 is a block diagram of an embodiment of the Receive DLL/PLL ofthe Bus Receiver of FIG. 21.

FIG. 24 is a block diagram of an embodiment of the Master BusTransceiver of the present invention.

FIG. 25 illustrates the effects of residual signals on a waveformtransmitted on the prior Bus.

FIGS. 26A and 26B are block diagrams of an output current driver thatdynamically adjusts its drive strength to compensate for residualsignals on the same channel.

FIG. 27 is a block diagram of a bus receiver with equalization circuitryto compensate for residual signals on the same channel.

DETAILED DESCRIPTION

The block diagram of FIG. 13 illustrates a Bus System 300 includingMaster Bus Transceiver 304 and/or Slave Bus Transceivers 322 of thepresent invention. Master Bus Transceiver 304 and Slave Bus Transceivers322 improve bus communications by adjusting their associated transmitand/or receive signal characteristics based upon each transceiver'stopography within the topography Bus System 300. Topography may bedefined in terms of slave position and system configuration, or in termsof either slave position or system configuration. As used herein,position refers to the position of each Slave 320 on Bus 330 withrespect to Master 302. In contrast, system configuration refers hereinto the position on Bus 330 of the Module including the Slave 320 and thetotal number of Slaves in each Module 340.

Slave Bus Transceiver 322 will be described in detail with respect toFIGS. 15-23 and the Master Bus Transceiver 304 will be described indetail with respect to FIGS. 24 and 16-23.

A. Bus System Overview

Bus System 300 includes Master Device (Master) 302, which controls amultiplicity of Slave Devices (Slaves) 320, only one of which, Slave 320a, is illustrated. Master 302 may also communicate with other masters(not shown). Master 302 may be realized using a microprocessor, adigital signal processor, a graphics processor, a peripheral controller,an input/output (I/O) controller, a direct memory access (DMA)controller, a memory controller, or a communications device. Slaves 320are typically realized as memory devices, such as dynamic random accessmemories (DRAMs), static random access memories (SRAMs), video randomaccess memories (VRAMs), electrically programable read only memories(EPROMs), and flash EPROMs, for example.

Master 302 and Slaves 320 communicate via high-speed Bus 330. Forsimplicity, Bus 330 is illustrated as a single line, or channel,although it may include a multiplicity of address, data and controllines. Master 302 and Slaves 320 communicate synchronously using clocksignals on lines 332 and 334. The CFM signal on line 332 is used tosynchronize data to be written to Slaves 320 by Master 304. The CTMsignal of line 334 is used to synchronize data to be read from Slaves320 by Master 304. To provide system flexibility Bus 330 includesseveral connector slots for inserting individual Slaves 302 or Modulesof Slaves (Modules) 340, only one of which is illustrated. In oneembodiment, Bus 330 includes three connector slots for three Modules340. Each Module 340 may include any number of Slaves 302, such as, forexample, none, four or eight. Additionally, each Module 340 includes asupplemental memory device called a Serial Presence Detect (SPD) 326,which stores module population data about an associated Module 340.Module population data includes, but is not limited to, the number ofSlaves 320 included on Module 340. Modules 340 may be easily added,removed, or replaced to reconfigure Bus System 300. Modification of theconfiguration of Bus System 300 also modifies the electrical signalcharacteristics of Bus 330.

To improve communication Bus System 300 supports signal characteristicadjustments in the Slave Bus Transceivers 322 (only one of which isillustrated) and Master Bus Transceiver 304. Host 308 determines thesystem configuration and bus locations of the slave devices, accessesTopography Dependent Parameters in a memory, determines from thatinformation a set of topography dependent parameters and distributesthem to the Master 302 and to the slave devices via the Master 302.Slave Bus Transceiver 322 a receives signals transmitted by Master 302to Slave 320 a via Bus 330 and transmits signals to Master 302 fromSlave 320 a via Bus 330. Based upon topography dependent parameters,Slave Bus Transceiver 322 adjusts receive signal characteristics,transmit signal characteristics, or both depending upon the embodimentimplemented. Slave Bus Transceiver 322 a may adjust any, all, or somecombination of, transmit signal characteristics, including, but notlimited to, slew rate, current swing, asymmetry, transmit center timing,and cross-talk and temporal equalization. Slave Bus Transceiver 322 amay also adjust any, all, or some combination of, receive signalcharacteristics, including, but not limited to, receive timing centerand voltage threshold(s). Slave Bus Transceiver 322 a adjusts its signalcharacteristics in response to topography dependent parameter stored inControl Registers 324. Depending upon the signal characteristics to beadjusted, Control Registers 324 may include a slew rate controlregister, a current control register for controlling the current swingof the transmit signal, a symmetry control register, a transmit timingcenter control register, an equalization control register, a thresholdcontrol register, and a receive timing center control register. Host 308determines the topography dependent parameter to be stored in eachcontrol register of Control Registers 324 based upon the topography ofBus System 300. In other words, Control Registers 324 store topographydependent parameters with which selected transmit and/or receive signalcharacteristics may be modified. How Host 308 determines the topographydependent parameters to be stored in the Control Registers 324 of eachSlave 320 will be discussed below with respect to Host 308 and FIG. 14.

Master Bus Transceiver 304 receives signals transmitted by each Slave320 to Master 302 via Bus 330 and transmits signals to each Slave 320from Master 302 via Bus 330. Based upon topography dependent parameters,Master Bus Transceiver 304, on a slave-by-slave, or module-by-modulebasis, adjustment of receive signal characteristics, transmit signalcharacteristics, or both depending upon the embodiment implemented. LikeSlave Bus Transceiver 322 a, Master Bus Transceiver 304 may adjust any,all, or some combination of, transmit signal characteristics and any,all, or some combination of, receive signal characteristics. Preferably,implementation of Master Bus Transceiver 304 will be complementary tothe implementation of Slave Bus Transceivers 322. Thus, if a Slave BusTransceiver 322 has already adjusted its transmit signal characteristicsbased upon topography dependent parameters prior to transmission toMaster 302 then Master Bus Transceiver 304 may not need to adjust itsreceive signal characteristics to compensate for topography dependentchannel effects. Master Bus Transceiver 304 adjusts its signalcharacteristics in response to topography dependent parameters for eachSlave 320. Depending upon the signal characteristics to be adjusted,Control Registers 306 may include for each Slave 320 within Bus System300 a slew rate control register, a current control register forcontrolling the current swing of the transmit signal, a symmetry controlregister, a transmit timing center control register, an equalizationcontrol register, a threshold control register, and a receive timingcenter control register. Host 308 determines the topography dependentparameters to be stored in each control register of Control Registers306 based upon the configuration and/or position of each Slave 320 onBus 330. How the topography dependent parameters to be stored in theControl Registers 306 are determined will be discussed below withrespect to Host and FIG. 14.

B. Determination of Topography Dependent Parameters

FIG. 14 illustrates in flow diagram form process 360 to determinetopography dependent characteristics in response to topography data.Process 360 begins in response to an initiating event, such as, forexample, addition, removal, or modification of a Module 340, systempower-up, or the passage of some period of time. During step 362 anintelligent agent determines the system configuration and the buslocation of each Slave 320 within the topography of Bus System 300. Theintelligent agent responsible for executing step 362 is preferably Host308. If topography is to be defined in terms of system configuration,during step 362 the SPDs 326 (see FIG. 13) associated with each Module340 may be polled to determine the number of Modules 340 and the numberand Device IDs of all Slaves 320 on each Module 340. In other words,during step 362 the topography of Bus System 300 is first determined.Given the topography of Bus System 300, the bus location of each Slave320 can be determined with respect to Master 302. Consider for examplethe case when Bus System 300 includes three Modules at three buslocations. Suppose also that it is discovered that the first Module 340includes eight Slaves 320, the second includes four Slaves 320 and thethird Module 340 includes eight Slaves 320. Under these conditions, theeight Slaves 320 on the first Module 340 are determined to have thefirst bus location, the four slaves on the second Module 340 areassigned the second bus location, and the eight slaves on the thirdModule are assigned the third bus location.

On the other hand, if topography is to be defined in terms of positionon Bus 330 with respect to Master 302, a number of methods may be usedduring step 362 to determine the topography of each Slave 320. In oneembodiment, a serial chain (not shown) can be used to enumerate Slaves320. The first Slave 320 encountered by Master 302 on the serial chainis closest to Master 302 and is assigned a first topography and DeviceID. Master 302 then commands the first Slave 320 to poll the next Slave320 on the chain. The responding Slave 320 is assigned a secondtopography Device ID. Enumeration of Slaves 320 continues until noresponse is received to a poll request on the serial chain.

Having determined the topography of each Slave 320 within Bus System300, the intelligent agent uses the topography of Bus System 300 todetermine appropriate values for the topography dependent parameters tobe stored in Control Registers 306 and/or Control Registers 324 (step364). Any number of methods may be used to obtain the value of eachtopography dependent parameter consistent with the present invention.For example, appropriate topography dependent parameter values may beobtained empirically, for example by looking up appropriate values in atable and/or by computing the parameter values in accordance withvarious predefined functions, and then conveying the determinedparameter values to the Master 302 and Slaves 320. In some embodiments,a software procedure is used to generate values for the topographydependent parameters, while in other embodiments a hardware based tablelookup methodology is used. For example, the N Slaves 320 closest toMaster 302 may be assigned a value x, the next N Slaves 320 may beassigned a value of x+Δ, etc. According to another method, the Slave 320closest to Master 302 is assigned a value of y, the second Slave 320 isassigned a value of y+Δ, the third slave is assigned a value of y+2Δ,etc. According to yet another method, if Bus System 300 includes morethan N Slaves 320 then all Slaves 320 are assigned a value of w, and ifthere are less than N Slaves 320 then all Slaves 320 are assigned avalue of z.

Having determined the values for the topography dependent parameters,Process 360 continues with step 366. During step 366 Master 302transmits the topography dependent parameters to each device in BusSystem 300 whose transmit or receive signal characteristics are to beadjusted.

During step 368 each device, Master 302 or Slave 320, receivestopography dependent parameters and stores them in appropriate controlregisters of Control Registers 306 or Control Registers 324, as the casemay be. Subsequently, during step 370 these topography dependentparameters are used by the device to adjust receive and/or transmitsignal characteristics to improve bus communications. How the topographydependent parameters are used will be discussed in detail below withrespect to specific signal characteristics and FIGS. 16-23.

C. The Slave Bus Transceiver

FIG. 15 illustrates in block diagram form an embodiment of Slave BusTransceiver 322 capable of adjusting any of several receive and transmitsignal characteristics. Slave Bus Transceiver 322 includes ControlRegisters 324, Bus Transmitter 380 and Bus Receiver 382. In theillustrated embodiment, Control Registers 324 include two registers forstoring topography dependent parameters associated with receive signalcharacteristics. The first, Threshold Control Register 390, permitsadjustment of the value of V_(ref) for received signals, where V_(ref)determines the voltage level between 0 and 1 signal values. The second,Receive Timing Center Control Register 392, permits adjustment of areceive clock signal so that a received data signal is sampled near thecenter of the data eye. In alternate embodiments, Control Registers 324may include a Threshold Control Register and a Receive Timing Registerper channel of Bus 330. Control Registers 324, as illustrated, alsoinclude four registers for storing topography dependent parametersassociated with transmit signal characteristics. Slew Rate ControlRegister 394 stores a topography dependent parameter for adjusting theslew rate of transmitted signals. Current Control Register 396 stores atopography dependent parameter for producing full swing signals at theoutput pins of a transmitting device. Symmetry Control Register 396stores a topography dependent parameter for adjusting the voltage levelof transmitted signals with respect to V_(ref). Transmit Timing CenterControl Register 400 stores a topography dependent parameter foradjusting a transmit clock signal so the transmitted signal will bereceived by Master 302 near the center of the data eye. EqualizationControl Register 401 stores a topography dependent parameter forequalizing the transmitted signal to account to temporal and/or spatialvariations in voltage margins. In alternate embodiments, ControlRegisters may include one Slew Rate Control Register, one CurrentControl Register, one Symmetry Control Register, one Transmit TimingCenter Control Register and one set of Equalization Control Registersper channel of Bus 330.

Bus Transmitter 380 receives internally generated data on line 381,buffers it and drives the transmit data to Bus 330. Depending upon theembodiment, Bus Transmitter 380 may also adjust the parameters of thetransmit data in response to topography dependent parameters stored inControl Registers 324. How Bus Transmitter 380 adjusts the variousparameters of the transmit data will be described in detail with respectto FIGS. 16-20 and FIGS. 26A-26B.

Bus Receiver 382 receives data from Bus 330, buffers it, and drives thereceive data onto line 384 for internal use by Slave 320. Bus Receiver382 may also adjust the parameters of the receive data in response totopography dependent parameters from Control Registers 324, dependingupon the embodiment. How Bus Receiver 382 does this will be discussed indetail with respect to FIGS. 21-23.

C1. The Bus Transmitter

FIG. 16 illustrates in block diagram form Bus Transmitter 380. BusTransmitter 380 includes circuitry for adjusting the transmit signal'stiming center, slew rate, current swing and symmetry in response tovarious control signals. Additionally, Bus Transmitter 380 equalizessignal characteristics prior to transmission to increase voltagemargins. In the illustrated embodiment, Bus Transmitter 380 includes aTransmit DLL/PLL, Output Multiplexer (MUX) 416, Predriver 420, andOutput Current Driver 422. Also included in the illustrated embodimentare Duty Cycle Compensator 418 and Slew Rate Estimator 410, which whilecompatible with the present invention are not necessary to it.

The Transmit DLL/PLL generates a transmit clock, which is coupled toOutput Multiplexer 416. The Transmit DLL/PLL adjusts the timing of therising edge of the transmit clock to ensure that the signals transmittedby Output Current Driver 422 will arrive in response to the topographydependent parameter stored in Transmit Timing Center Control Register400. By adjusting the clock used to transmit the data signal, TransmitTiming Center Control Register 400 can vary when the data signal istransmitted so that the data signal will be sampled by a receivingdevice near a desired position within the data eye, for example, thecenter of the data eye or a position offset from the center of the dataeye. Output Multiplexer 416 receives odd data to be transmitted on line381 a and even data on line 381 b and generates clocked data in responseto the transmit clock signal from the Transmit DLL/PLL. OutputMultiplexer 416 outputs the clocked data on line 417.

In the illustrated embodiment, there are two sources of slew ratecontrol signals, Slew Rate Estimator 410 and Slew Rate Control Register394. In this embodiment, Slew Rate Estimator 410 sets a baseline slewrate that can be varied in accordance with the topography dependentparameter stored in Slew Rate Control Register 394. Slew Rate Estimator410 generates two signals, SRC<3:2>, each representing a single bit ofthe slew rate control signal. Circuitry for estimating slew rate arewell known in the art. The topography dependent parameter stored in SlewRate Control Register 394 represents an adjustment to that baseline slewrate. In alternate embodiments, Slew Rate Estimator 410 may be omittedand the slew rate may be completely controlled via Slew Rate ControlRegister 394.

In the illustrated embodiment, both Duty Cycle Compensator 418 andPredriver 420 are responsive to slew rate control signals. Duty CycleCompensator 418 receives clocked data on line 417, anticipates thechanges in the duty cycle that will be caused by Predriver 420 inresponse to the slew rate control signals and pre-compensates for thatchange in duty cycle. Duty Cycle Compensator 418 couples its outputsignal to Predriver 420 on line 419. Duty Cycle Compensator 418 will befurther described with respect to FIG. 17. In alternative embodiments ofBus Transmitter 380, Duty Cycle Compensator 418 may be omitted and thesignal on line 417 may be connected directly to Predriver 420. Predriver420 adjusts the slew rate of the transmit data in response to the slewrate control signals. Predriver 420 couples its output signals to q-node421. Predriver 420 will be further described with respect to FIG. 18.

The Current/Symmetry Control bits, cc, are used by Output Current Driver422 to adjust the voltage swing of the output signals and to adjust theaverage value of the output signals with respect to V_(ref). OutputCurrent Driver 422 will be described in detail with respect to FIG. 19.Current/Symmetry Control Circuitry 412 generates the current/symmetrycontrol bits in response to topography dependent parameters from CurrentControl Register 396 or Symmetry Control Register 398. Current/SymmetryControl Circuitry 412 will be described in detail with respect to FIG.20.

Output Current Driver 422 uses control signals provided by EqualizationControl Register 401 to equalize the output signals and increase thevoltage margins at a receiving device such as Master 302. Using atopography dependent parameter stored in Equalization Control Register401, Output Current Driver 422 is able to dynamically change its drivestrength to compensate for residual and cross-coupled signals present onthe channel. Embodiments of Output Current Driver 422 capable ofequalizing signals will be described below with respect to FIGS. 26A and26B.

The Duty Cycle Compensator

FIG. 17 illustrates schematically Duty Cycle Compensator 418 of FIG. 16.Duty Cycle Compensator 418 pre-compensates for distortion of the dutycycle caused by the slew rate control blocks of Predriver 420 when theslew rate control signals SRC<1:0> are enabled. In response to the slewrate control signals, SRC<1:0>, Duty Cycle Compensator 418pre-compensates the data signals being input to Predriver 420 such thatthe distortion caused by Predriver 420 is canceled out in the q-nodesignal at q-node 421. In other words, Duty Cycle Compensator 418modifies the duty cycle of the clocked data signal on line 417 by apredetermined amount in response to slew rate control signals SRC<1:0>.

Duty Cycle Compensator 418 has a pair of series-connected Inverters 430and 432 and two parallel Transistor Stacks 434 and 436. TransistorStacks 434 and 436 each include a pair of n-type transistors connectedin series between the output of Inverter 432 and ground. The input toupper transistors T₁ and T₃ is the signal output by Inverter 432. Theslew rate control bits connect to the gate of the lower transistors T₂and T₄. A high voltage level on the slew rate control bits enablesStacked Transistors 246, 248 to adjust the duty cycle of the clockeddata signal, by increasing the slew rate of high-to-low transitions onthe input to Predriver 420. A low voltage level on the slew rate controlbits disables Stacked Transistors 246, 248 and prevents the duty cycleof the clocked data signal on line 419 from being modified.

In an alternate embodiment, the lower transistors T₂ and T₄ may beweighted to provided additional range.

The Predriver

FIG. 18 illustrates schematically Predriver 420 of FIG. 16, whichincludes Base Block 440 and two Slew Rate Adjustment Blocks 442, oneresponsive to Slew Rate Estimator 410 and the other to Slew Rate ControlRegister 394. Predriver 420 uses the slew rate control signals from SlewRate Estimator to set a nominal slew rate that it adjusts in response toa topography dependent parameter from Slew Rate Control Register 394.

Base Block 440 is always enabled and outputs a signal to q-node 421 thathas an associated, predetermined slew rate. Base Block 440 includesInverters 444 and 446 connected in series which are sized to provideboth an appropriate slew rate and duty cycle.

In the illustrated embodiment, four Slew Rate Adjustments Blocks 442 a-dare connected in parallel with Base Block 440, although any arbitrarynumber may be used consistent with the present invention. Slew RateAdjustment Blocks 442 a and 442 b are responsive to slew rate controlsignals from Slew Rate Estimator 410. Slew Rate Control Blocks 442 c and442 d are responsive to slew rate control signals from Slew Rate ControlRegister 394. The slew rate of the signal on line 421 increases with thenumber of enabled Slew Rate Adjustment Blocks 442. In one embodimenteach Slew Rate Adjustment Block 442 includes a Control Block 448connected in series with a Stacked Transistor Pair 450. When enabled bytheir associated slew rate control signals Control Blocks 448 enabletheir associated Stacked Transistor Pairs 450 to be responsive to thedata signal on line 419. Each Control Block 448 includes a NAND gate 449and a NOR gate 451. NAND gate 449 enables the p-channel transistor T₅ ofTransistor Stack 450 and NOR gate 451 enables n-channel transistor T₆.The output 452 of each Stacked Transistor Pair 450 connects to q-node421.

When slew rate control bit SRC<x> is at a high voltage level, NAND gate449 is enabled to be responsive to the data signal on line 419, allowingit to drive Transistor T₅. At the same time, when SRC<x> is at a highvoltage level, /SRC<x> is at a low voltage level which enables NOR gate451 to be responsive to the data signal on line 419, allowing the datasignal to drive the lower n-channel transistor T₆. When the NAND gate449 and NOR gate 451 are both enabled and when the data signal on line419 transitions to a low voltage level, a high voltage level appears atthe output of NOR gate 451. This causes lower n-type transistor T₆ toconduct current to ground thereby increasing the rate at which theq-node 421 is driven to ground. At substantially the same time that ahigh voltage level appears at the output of NOR gate 451, a high voltagelevel appears at the output of NAND gate 449 that causes the upperp-channel transistor T₅ to stop conducting current, turning off.

When the NAND gate 449 and NOR gate 451 are both enabled and the datasignal on line 419 transitions to a high voltage level, a low voltagelevel appears at the output of NAND gate 449. This causes the upperp-channel transistor T₅ to conduct current thereby increasing the rateat which q-node 421 is driven to a high voltage level. At substantiallythe same time as a low voltage level appears at the output of NAND gate449, a low voltage level appears at the output of NOR gate 451 thatcauses the lower n-channel transistor T₆ to turn off.

When SRC<x> is at a low voltage level and /SRC<x> is at a high voltagelevel, neither NAND gate 449 nor NOR gate 451 responds to the datasignal and are thereby disabled, preventing any response by TransistorStack 450.

In one embodiment, one Slew Rate Adjustment Block 442 a increases theslew rate by 0.5 with respect to the Base Block 440, while the Slew RateAdjustment Block 442 b increases the slew rate by 1.5 with respect tothe Base Block 440 etc. However, the Slew Rate Adjustment Blocks 204,206 can provide other predetermined amounts of adjustment to the slewrate.

Slew Rate Adjustment Blocks 442 are sized to provide an appropriate slewrate without regard to the duty cycle to increase the range for eachsetting of the slew rate control bits. Therefore, activating the SlewRate Adjustment Blocks will cause asymmetry in the duty cycle of theoutput voltage V_(out), for which Duty Cycle Compensator 418precompensates, as previously discussed with respect to FIG. 17.

The Output Current Driver and Current/Symmetry Control

FIG. 19 illustrates schematically Output Current Driver 422, whichcontrols both the voltage swing at the output pins of the transmittingdevice and the average level of that swing in response toCurrent/Symmetry control bits cc. (In the interests of simplicity, FIG.19 omits circuitry for equalizing the output signal from Output CurrentDriver 422.) Output Current Driver 422 includes multiple TransistorStacks 460-472 connected in parallel between Bus 330 and ground. EachTransistor Stack 460-472 includes two n-channel transistors, an uppertransistor and a lower transistor that are connected in series. Theq-node signal on line 421 is input to the gate of the upper transistorsT₁₀, T₁₂, T₁₄, T₁₆, T₁₈, T₂₀ and T₂₂. Current/symmetry control signalson a set of current/symmetry control bits, cc through cc, are input tothe gate of the lower transistors T₁₁, T₁₃, T₁₅, T₁₇, T₂₁ and T₂₃. Wheneach of the current/symmetry control signals is at or exceeds thethreshold voltage (V_(th)) of the lower transistor, the correspondinglower transistor T₁₁, T₁₃, T₁₅, T₁₇, T₂₁ and T₂₃ is enabled or “on.”When a lower transistor T₁₁, T₁₃, T₁₅, T₁₇, T₂₁ or T₂₃ is enabled andwhen the q-node signal transitions high (i.e., to its logic highvoltage), a predetermined amount of current flows through the selectedTransistor Stack to the circuit ground. Therefore, the output drivecurrent is adjusted by setting a subset of the current/symmetry controlsignals to a high voltage level.

To further provide a programmable output drive current, at least one ofthe Transistor Stacks may be binary weighted with respect to at leastone other Transistor Stacks. Preferably the transistor pairs in all theTransistor Stacks of the Output Current Driver 422 are sized so that thecurrent drive capability of the Transistor Stacks 460, 462, 464, 466,468, 470 and 472 have current drive ratios of 64:32:16:8:4:2:1,respectively (i.e., are binary weighted).

The Current/Symmetry Control Circuitry

FIG. 20 illustrates schematically Current/Symmetry Control Circuitry412, which produces the Current/Symmetry Control bits cc.Current/Symmetry Control Circuitry 412 can be used to adjust the averagelevel of signals output by Output Current Driver 422 via the topographydependent parameter stored in Symmetry Control Register 396 or to causeOutput Current Driver 422 to produce full swing output signals via thetopography dependent parameter stored in Current Control Register 398.Current/Symmetry Control Circuitry 413 includes a multiplexer (MUX) 460,a Comparator 464, and a Counter 470, whose count is represented as theCurrent/Symmetry Control bits, cc, on line 413. More specifically, whenCal Mode signal on line 671 is asserted, Switches 414A and 414B close tocouple Resistor Network 672 between Bus Lines 330A and 330B. Each nodebetween the resistors of Resistor Network 672 is coupled to a respectiveinput of MUX 460. The Cal Mode signal on line 671 also controls logicGates 425A and 425B, which, control Output Current Drivers 422A and422B. When turned on by Gate 425A, Output Current Driver 422A sinkscurrent through Resistor 675A, pulling Bus Line 330A to a low potential.At approximately the same time Gate 425B turns off Output Current Driver422B, which leaves Bus Line 330B pulled up through Resistor 675B. Thisarrangement produces a voltage divider between Bus Lines 330A and 330B,with successively lower voltage appearing at each input to MUX 460.

Current Control Register 398 can be used to load a value into Counter470, thereby directly controlling the value represented byCurrent/Symmetry Control bits, cc. In contrast, Symmetry ControlRegister 396 indirectly controls the Current/Symmetry Control bits. Thetopography dependent parameter stored in Symmetry Control Register 396is used to select one of the inputs to MUX 460 as its output signal. Theinputs to MUX 460 are generated by a series of taps on a resistivevoltage divider tied between ground and an output voltage produced byOutput Current Driver 422, the V_(out) signal. The signal output by MUX460 is coupled as an input to Comparator 464. Comparator 464 comparesthe input signal from MUX 460 to a reference voltage, V_(ref). Theoutput signal from Comparator 464 is coupled to the Up/Down input ofCounter 470. If the MUX output is greater than V_(ref), Comparator 464forces Counter 470 to increase its count, and if the Mux output is lessthan V_(ref) then Comparator 464 forces Counter 470 to decrease itscount. Comparator 464 drives its output signal up or down until theV_(out) signal causes the voltage at the selected tap of the resistivedivider to equal V_(ref). When this occurs, the current output by OutputCurrent Driver 422 has reached the desired level indicated by thetopography dependent parameter in Symmetry Control Register 396. Bysetting the value of the topography dependent parameter stored inSymmetry Control Register 396 to select one of the different taps ofResistor Network 67 2, an appropriate degree of asymmetry may beproduced in the output voltage swing. Thus, the topography dependentparameter stored in Symmetry Control Register 396 can be used to adjustthe midpoint between a high output voltage and low output voltage up ordown relative to V_(ref).

The Output Current Driver and Temporal Equalization

FIG. 26A illustrates, in block diagram form, an embodiment 700A ofOutput Current Driver 422 that dynamically adjusts its drive strength tocompensate for voltage margins caused by residual signals on the samechannel. Output Current Drive 700A adjusts its drive current in responseto the topography dependent parameter stored in Equalization ControlRegister 401. In other words, Output Current Driver 700A performstemporal equalization in response to a topography dependent parameter.In the interests of simplicity, FIG. 26A omits circuitry related toCurrent/Symmetry control. To accommodate Output Current Driver 700A,Equalization Control Register 401 is preferably realized as amultiplicity of Equalization Control Registers (ECRs), ECR1 401-1through ECRk 401-k, each storing a topography dependent equalizationcoefficient, c_(eq). Output Current Driver 700A includes Weighted Driver701, a multiplicity of Equalization Drivers 702-1 to 702-K, and DataHistory Generator 705. Weighted Driver 701, which may be implementedusing the same circuitry as shown in FIG. 19, receives a data signal,Data_(j), from q-node 421 and weights that signal by an amountdetermined by the current control CC parameter, as explained above. Whenturned on by the data signal, Data_(j), a current i_(SIG) to flowthrough Weighted Driver 701. In other words, the magnitude of i_(SIG) isa function of Data_(j) and CC. Data History Generator 705 provides inputsignals to the Equalization Drivers 702 that represent prior datasignals, Data_(j-1) through Data_(j-k). Data History Generator 705 maybe realized as a shift register. Like Weighted Driver 701, EqualizationDrivers 702 weight their respective prior data signals by an amountdetermined by an associated ECR, which stores a topography dependentequalization coefficient, c_(eq). Thus the Equalization Drivers 702respectively sink equalization currents i_(EQ1) through i_(EQK), each ofwhich is a function of the prior data signal input to the individualEqualization Driver 702 and the associated topography dependentequalization coefficient. The total current, i_(OL), output by OutputCurrent Driver 700A may be expressed as follows:

i _(OL) =i _(SIG) +i _(EQ1) +i _(EQ2) . . . +i _(EQK)  (1)

Thus, by controlling the magnitude of i_(OL) ECRs 401A-401K+1 enableequalization of V_(OUT) to compensate for residual signals associatedwith a particular channel. That is to say, V_(OUT) is directly relatedto i_(OL).

As discussed above with respect to FIG. 19, Weighted Driver 701 includesN binary weighted Transistors 703A-703N (1x, 2x, . . . 2^(N-1)x). Thus,the current through Weighted Driver 701, i_(SIG), is given byi_(SIG)=Data_(j)×CC×I_(UNIT); where

I_(UNIT) is the current through the smallest weighted transistor (T23,FIG. 19) in

weighted driver 701 when it is active;

CC is a current control value; and

Data_(j) is the data signal input to Weighted Driver 701.

Data History Generator 705 receives the signal Data_(j) and a transmitclock signal, t_(CLK), and generates K delayed data signals, Data_(j-1)through Data_(j-k). In one embodiment, a new data value is transmittedat each rising edge and each falling edge of the t_(CLK) signal, whilein an alternative embodiment data is transmitted on only one clock edgeper cycle of the transmit clock.

FIG. 26B illustrates in greater detail one of the Equalization Drivers702-y of FIG. 26A. Equalization Driver 702-y includes a multiplexer(MUX) 709, a set of additive logic gates, ADD Gates 712A-712R, a set ofassociated binary weighted Transistors 710A-710R, a set of subtractivelogic gates, SUB Gates 711A-711R, and a set of associated binaryweighted Transistors 713A-713R. In the illustrated embodiment, each ECR401A-401K+1 represents it equalization coefficient via a sign bit (Sbit) and multiple magnitude bits. In the illustrated embodiment, theequalization coefficient is represented by three magnitude bits;however, other embodiments including fewer or more magnitude bits areconsistent with the present invention. Referring specifically to theillustrated embodiment of Equalization Driver 702-y in FIG. 26B, the Sbit selects from MUX 709 either the inverted or non-inverted version ofthe Data_(j-y) signal, while each bit of the coefficient magnitude isinput to an “ADD” AND Gate 712 and to a “SUB” AND Gate 711. The pairedADD Gate 712 and SUB Gate 711 associated with a particular magnitude biteach are associated with a similarly weighted binary weightedTransistor. In particular, bit 1 of the coefficient magnitude is inputto ADD Gate 712A and SUB Gate 711A, which, depending on the state of theData_(j-y) signal, activates Transistor 710A (1x) and Transistor 713A(−1x), respectively. Note that the binary weighting of Transistors 710Aand 713A is equal in magnitude, but of opposite sign. Similarly, bit 2of the coefficient magnitude in input to ADD Gate 712B and SUB Gate711B, which may active Transistor 710B and Transistor 713B,respectively.

Consider the operation of Equalization Driver 702-y when the coefficientmagnitude bits stored in ECRy 401-y represent zero. In this situation,every SUB Gate 711A-711R activates its associated binary weightedTransistor 713A-713R, while no ADD Gate 712A-712R activates itsassociated binary weighted Transistor 710A-710R. This is true regardlessof the state of the Data_(j-y) signal or the state of the S bit fromECR2 401B. Thus, the current sunk by Equalization Driver 702-y i_(EQy),is approximately (2^(R)−1)×I_(UNIT), where I_(UNIT) is the currentthrough 1x transistor 710A when it is activated.

Next, consider the operation of Equalization Driver 702-y when theequalization coefficient is at a positive maximum, rather than aminimum; i.e., all coefficient bits are set and the S bit is positive.In this situation, every ADD Gate 712A-712R activates its associatedbinary weighted Transistor 710A-R and no SUB Gate 711A-711R actives itsassociated binary weighted Transistor 713A-R. Thus, the current sunk byEqualization Driver 702-1, i_(EQ1), is approximately(2^(R+1)−2)×I_(UNIT). Finally, consider the operation of EqualizerDriver 702-y when the equalization coefficient is at a negative maximum;i.e. all the magnitude bits are set and the S bit is negative. When thisoccurs all ADD Gates 712A-712R and all SUB Gates 711A-711R are turnedoff and none of the binary weighted Transistors 710A-710R and 713A-713Ris activated. Thus, in this situation Equalizer Driver 702-y sinks nocurrent. The current sunk by Equalizer Driver 702-y is generallyexpressed as follows:

i _(EQ1)=2^(R) ×I _(UNIT)+(C _(EQ1)×2^(R))×Polarity(Data_(j-1))×I_(UNIT); where Polarity(Data_(j-1)) is 1 if Data_(j-1)=1 and −1 ifData_(j-1)=0.  (3)

Equalizer Drivers 702-1 to 702-k operate in a similar fashion inresponse to their associated data signals and equalizer coefficients,allowing their output current to be increased or decreased relative to2^(R)×I_(UNIT). Thus, the total current i_(OL) output by Output CurrentDriver 700A is given by the following expression: $\begin{matrix}{{{i_{OL} = \quad {i_{SIG} + i_{EQ}}};{where}}\text{}\begin{matrix}{i_{EQ}\quad = {{2^{R} \times K \times I_{UNIT}} + {\left( {C_{EQ1} \times 2^{R}} \right) \times {{Polarity}\left( {Data}_{j - 1} \right)} \times I_{UNIT}} +}} \\{\quad {{\left( {C_{EQ2} \times 2^{R}} \right) \times {{Polarity}\left( {Data}_{j - 2} \right)} \times I_{UNIT}} +}} \\{\quad \vdots} \\{\quad {\left( {C_{EQK} \times 2^{R}} \right) \times {{Polarity}\left( {Data}_{j - K} \right)} \times {I_{UNIT}.}}}\end{matrix}} & (4)\end{matrix}$

By setting the term (2^(R)×K×I_(UNIT)) equal to the desired high voltagelevel, V_(HI), on the channel, the equalization coefficients,C_(EQ1)-C_(EQK), stored in ECRs 401A-401K can be used to effect acurrent swing above and below the nominal current used to produce V_(HI)and above and below the nominal current used to produce the desired lowvoltage level, V_(LO). These current swings can be used in turn tooverdrive or underdrive the channel, compensating the output voltage forpast output levels. Note that the current I_(UNIT) drawn by the 1xTransistor (T23, FIG. 19) associated with Weighted Driver 701 may bedifferent from the current I_(UNIT) drawn by the 1x Transistor 712Aassociated with Equalization Driver 702-y.

Although FIGS. 26A and 26B illustrate a pull-down circuit for theequalizing channel voltage, a combination of pull-up and pull-downcircuits may be used in an alternative embodiment. For example, a set ofweighted transistors coupled between V_(TERM) and the output of OutputCurrent Driver 700 may be used to pull up the output signal inproportion to a positive equalization coefficient. Generally, anycircuit for adjusting channel voltages may be used without departingfrom the scope of the present invention.

The Output Current Driver and Cross-Talk Equalization

The circuitry of FIGS. 26A and 26B may be modified to cross-talkequalize a channel. Cross-talk equalization involves modifying a channelvoltage to compensate for cross-coupled signals from neighboringchannels. Referring to FIG. 26A, for example, Data History Generator 705may be removed and the output of neighboring channels may be coupled tothe inputs of Equalization Drivers 702-1 to 702-k. In this way,equalization currents, i_(EQ1) through i_(EQK), may be generated basedupon the state of neighboring channels and weighted by topographydependent parameters. As with temporal equalization, a combination ofweighted pull-up and pull-down circuits or other circuits for adjustingchannel voltages may be used to perform cross-talk equalization. Asdiscussed above, a given device may include both spatial equalizationcircuitry and temporal equalization circuitry.

Receiver-Side Equalization

FIG. 27 illustrates a bus receiver 800 with equalization circuitryaccording to one embodiment. Incoming data, Data_(j), is summed with anequalization offset 816 by analog adder 817, generating an equalizeddata value D_(EQ), for comparison with V_(ref) by a comparator 830. Theequalization offset 816 is generated by adding and subtractingequalization coefficients C1_(EQ) to CK_(EQ) according to the state ofpreviously received data values, Data_(j-1) to Data_(j-k), respectively.

A data history generator 705, preferably implemented as a shiftregister, receives the output of the comparator 830 and generates thedata history values, Data_(j-1) to Data_(j-k). The data history valuesare used to select, via multiplexers 811-1 to 811-k, between positiveand negative versions of respective equalization coefficients C1_(EQ) toCK_(EQ) stored in equalization registers 804-1 to 804-k. As with theequalization coefficients discussed above with reference to FIG. 26B,equalization coefficients C1_(EQ) to CK_(EQ) may be positive or negativevalues. As shown in FIG. 27, a negative version of the content of eachequalization register 804 is generated by a respective two's complementgenerator 809. Any number of circuits for generating negative versionsof equalization coefficients may be used in alternate embodiments. Also,one's complement circuitry may be used in alternate embodiments insteadof two's complement circuitry.

A digital adding circuit 814 receives the output from each of themultiplexers 811-1 to 811-k and generates a sum of coefficients, whichit provides to a digital-to-analog converter (DAC) 815. The DAC 815generates an analog equalization offset value 816 which is summed byanalog adder 817 with the incoming data value, Data_(j).

In an alternate embodiment, separate digital-to-analog converters areused to convert the outputs of multiplexers 811-1 to 811-k to respectiveanalog values. The analog value or values are then combined with theincoming data value, Data_(j), by analog adder 817. In this embodiment,adding stage 814 may be omitted, reducing the amount of time required toprovide a valid offset value at adder 817. In another alternateembodiment, adder 817 is used to add the equalization offset to Vrefinstead of to the incoming data. In that case, the equalization offsetis generated with reverse polarity.

In yet another alternate embodiment of a bus receiver, analog ratherthan digital circuitry is used to perform equalization. Sample and holdcircuitry is used to capture past data signals, Data_(j-1) toData_(j-k). The amplitude of the captured signals are weighted byequalization coefficients C1_(EQ) to CK_(EQ) from registers 804-1 to804-k, and then input to analog adder 817. Cross-talk equalization isalso accomplished in this manner, except that neighboring signals areweighted by the equalization coefficients instead of prior data signalson the same signal path.

C2. The Bus Receiver

FIG. 21 illustrates, in block diagram form, an embodiment of BusReceiver 382 capable of adjusting any of two receive signalcharacteristics, Receive Timing Center and Voltage Threshold. BusReceiver 382 includes Comparator 480 and Timing Circuitry 486.Comparator 480 compares the incoming data signals from Bus 330 with areference voltage level, V_(ref), which is adjusted by Threshold ControlCircuitry 490. Threshold Control Circuitry 490 responds to a topographydependent parameter stored in Threshold Control Register 390. ThresholdControl Circuitry 490 will be described in detail with respect to FIG.22.

Timing Circuitry 486 takes the output signal from Comparator 480 andsynchronizes it with the internal receive clock signal, RCLK, which isgenerated from CFM signal on line 332 (shown in FIG. 13). TimingCircuitry 486 outputs the synchronized receive signals to the rest ofSlave 320 on line 488. Receive Delay Lock Loop/Phase Locked Loop(DLL/PLL) 496 generates the RCLK signal on line 498 and adjusts when therising edge of the RCLK signal occurs in response to a topographydependent parameter stored in Receive Timing Center Control Register 392so that the received data is sampled near the center of the data eye.Receive DLL/PLL will be described in detail with respect to FIG. 23.

Threshold Control Circuitry

FIG. 22 illustrates, in block diagram form, Threshold Control Circuitry490 and its relationship to Threshold Control Register 390 andComparator 480. Threshold Control Circuitry 490 modifies the level ofV_(ref) from a baseline level in response to the topography dependentparameter stored in Threshold Control Register 390. The output ofThreshold Control Circuitry 490 is an adjusted reference voltage,V_(refAdj), on line 392 which is coupled to an input of Comparator 480.Threshold Control Circuitry 490 includes a Digital-to-Analog Converter(DAC) 494 and a Summing Amplifier 496. DAC 494 produces an analogvoltage in response to the digital represented topography dependentparameter stored in Threshold Control Register 390. DAC 494 couples thisanalog voltage to Summing Amplifier 496 on line 495. Summing Amplifier496 sums the voltage on line 495 with the system wide reference voltagelevel, V_(ref), to produce V_(refAdj), which is coupled to Comparator480 on line 392.

The Receive DLL/PLL

FIG. 23 illustrates, in block diagram form, an embodiment of ReceiveDLL/PLL 496 that takes full advantage of signals typically available inconventional DLL/PLL circuits. Receive DLL/PLL 496 may be embodied usingother Delay Lock Loop/Phase Lock Loop architectures consistent with thepresent invention. In the illustrated embodiment Receive DLL/PLL 496includes DLL/PLL Reference Loop 500, Matched Delay 508,Digital-to-Analog Converter (DAC) 514, Phase Mixer 516 and Fine LoopMixer 520. DLL/PLL Reference Loop 500 receives as input a referenceclock signal, C₀, from Fine Loop Mixer 520. Reference clock signal C₀ isa 45° earlier version of the RCLK signal. Given this input, DLL/PLLReference Loop 500 generates two additional clock signals, C₁ and C₂.The C₁ clock signal is offset by 45° from the C₀ signal, and is thus inphase with RCLK, while the C₂ signal is offset by 90° from the C₀signal. All three clock signals, C₀, C₁ and C₂, are coupled to PhaseMixer 516, which generates an offset feedback signal, FBCLK, whichvaries between −45° to 45° offset from RCLK. The amount of offset of theFBCLK signal is determined by the topography dependent parameter storedin Receive Timing Center Control Register 392. DAC 514 produces ananalog voltage representative of the desired timing offset in responseto the output from Receive Timing Center Control Register 392. DAC 514couples its output voltage to Phase Mixer 516. The C₁ clock signal isoutput through Matched Delay 508 as the RCLK signal.

D. The Master Bus Transceiver

FIG. 24 illustrates, in block diagram form, Master Bus Transceiver 304capable of adjusting any of several receive and transmit signalcharacteristics for each Slave 320 according to the topography of theSlave 320. Master Bus Transceiver 304 includes Control Registers 306,Bus Receiver 382, Bus Transmitter 380, Multiplexers (MUXs) 530-540 andDevice ID Map 510. Map 510 selects one of N control registers in each ofseveral banks of control registers 512-522 based on an address or otheridentifier in each access request.

Control Registers 306 include several Banks of control registers512-522, one bank of control registers for each signal characteristic tobe adjusted in response to a topography dependent parameter. Each bankof control registers 512-522 includes N control registers, where N mayrepresent the number of Slaves 320 in Bus System 300, the number ofModules 340, or any other number of grouping of Slaves 320 or Modules340 which are to be assigned the same values for topography dependentparameters. Thus, Bank 512 includes N Threshold Control Registers, eachstoring a topography dependent parameter for a subset of Slaves 320 orModules 340. Each Threshold Control Register stores the same type oftopography dependent parameter discussed previously with respect toThreshold Control Register 390. Bank 514 includes N Receive TimingCenter Control Registers, each storing the same type of topographydependent parameter discussed previously with respect to Receive TimingCenter Control Register 392. Bank 516 includes N Slew Rate ControlRegisters, each storing for a particular subset of Slaves 320 or Modules340 the same type of topography dependent parameter previously discussedwith respect to Slew Rate Control Register 394. Bank 518 includes NCurrent Control Registers, each storing the same type of topographydependent parameter previously discussed with respect to Current ControlRegister 396. N Symmetry Control Registers comprise Bank 520, eachstoring the same type of topography dependent parameter discussedpreviously with respect to Symmetry Control Register 398. Similarly,Bank 522 comprises N Transmit Timing Center Control Registers, eachstoring the same type of topography dependent parameter previouslydiscussed with respect to Transmit Timing Center Control Register 400.Bank 524 comprises X Equalization Control Registers, each storing thesame topography dependent equalization coefficients discussed previouslywith respect to Equalization Control Register 401.

In alternate embodiments of Control Registers 326 may includes one ofeach type of control register bank per channel of Bus 330. Theseembodiments contrast with the illustrated embodiment, which includes onebank of each type of control register.

Associated with each Bank of Control Registers 512-552 is a MUX 530,532, 534, 536, 538 or 540 for selecting the topography dependentparameter associated with a single control register of the Bank. Theselected topography dependent parameter from the Bank is then coupled toeither Bus Receiver 382 or Bus Transmitter 380. For example, MUX 530couples the topography dependent parameter from a single ThresholdControl Register of Bank 512 to Bus Receiver 382 while MUX 538 couplesthe topography dependent parameter from a single Symmetry ControlRegister of Bank 520 to Bus Transmitter 380. Each MUX 530-540 selectswhich input signal is to be output in response to a Device ID signal online 511 generated by Device ID Map 510. Device ID Map 510 analyzes thememory requests received by Master 302 and identifies the particularSlave 320 to whom data should be exchanged. Device ID Map 510 indicatesthe identified Slave 320 via its Device ID signal. Device ID Map 510 maybe realized as a memory device storing a table mapping system addressesto device IDs.

Bus Receiver 382 has been previously described with respect to FIGS.21-23 and Bus Transmitter 380 has been previously described with respectto FIGS. 16-20.

Alternate Embodiments

While the present invention has been described with reference to a fewspecific embodiments, the description is illustrative of the inventionand is not to be construed as limiting the invention. Variousmodifications may occur to those skilled in the art without departingfrom the true spirit and scope of the invention as defined by theappended claims.

What is claimed is:
 1. An integrated circuit device that communicateswith a plurality of other integrated circuit devices, the integratedcircuit device comprising: a receiver circuit to sample data from anexternal signal line at a sample time; and a register to store a valuerepresentative of a sampling time adjustment that is applied to thesample time, wherein the value is determined based on informationspecifying a configuration of the plurality of other integrated circuitdevices.
 2. The integrated circuit device of claim 1, wherein the sampletime is indicated by an internal receive signal, wherein the internalreceive signal is adjusted, based on the value, to apply the samplingtime adjustment to the sample time.
 3. The integrated circuit device ofclaim 2, further including a locked loop circuit to generate theinternal receive signal.
 4. The integrated circuit device of claim 2,wherein value is selected such that the sample time is adjusted tosubstantially center a data eye of the data with respect to the internalreceive signal.
 5. The integrated circuit device of claim 1, wherein theinformation specifying the configuration of the plurality of otherintegrated circuit devices is stored in a supplemental memory device,wherein the value is determined by accessing the supplemental memorydevice.
 6. The integrated circuit device of claim 5, wherein thesupplemental memory device is a serial presence detect memory device. 7.The integrated circuit device of claim 6, wherein the serial presencedetect memory device is associated with a memory module, wherein asubset of the plurality of other integrated circuit devices are memorydevices disposed on the memory module.
 8. The integrated circuit deviceof claim 1, wherein the integrated circuit device is a memory controllerdevice.
 9. The integrated circuit device of claim 1, wherein theintegrated circuit device is a microprocessor device.
 10. The integratedcircuit device of claim 1, wherein the integrated circuit device is adynamic random access memory device.
 11. The integrated circuit deviceof claim 1, wherein the integrated circuit device is a static randomaccess memory device.
 12. The integrated circuit device of claim 1,wherein the integrated circuit device is a communications device. 13.The integrated circuit device of claim 1, further comprising: atransmitter circuit to transmit data in response to an internal transmitsignal; and a register to store a value representative of a transmittime adjustment that is applied to the internal transmit signal.
 14. Theintegrated circuit device of claim 13, further comprising a register tostore a value representative of a slew rate adjustment that is appliedto the transmitter circuit.
 15. The integrated circuit device of claim13, further comprising a register to store a value representative of adrive strength adjustment that is applied to the transmitter circuit.16. The integrated circuit device of claim 1, further comprising aregister to store a value representative of a reference voltage leveladjustment that is applied to a reference voltage to derive a modifiedreference voltage level, wherein the input receiver samples the datausing the modified voltage reference level.
 17. A method of operation ofan integrated circuit device that communicates with a plurality of otherintegrated circuit devices, the method comprising: sampling data from anexternal signal line, wherein the data is sampled in response to aninternal receive signal; and upon initialization of the system, storinga value representative of a sampling time adjustment that is applied tothe internal receive signal, wherein the value is determined usinginformation specifying a configuration of the plurality of otherintegrated circuit devices.
 18. The method of claim 17, furtherincluding generating the internal receive signal using a locked loopcircuit.
 19. The method of claim 18, wherein the locked loop circuitgenerates the internal receive signal using an external signal thatpropagates along with the data.
 20. The method of claim 17, furtherincluding accessing the information specifying the configuration of theplurality of other integrated circuit memory devices from a supplementalmemory device.
 21. The method of claim 17, wherein the supplementalmemory device is a serial presence detect memory device.
 22. The methodof claim 21, wherein the serial presence detect memory device isassociated with a memory module and a subset of the plurality of otherintegrated circuit devices are memory devices disposed on the memorymodule.
 23. The method of claim 17, wherein the integrated circuitdevice is a memory controller device.
 24. The method of claim 17,wherein the integrated circuit device is a microprocessor device. 25.The method of claim 17, wherein the integrated circuit device is amemory device.
 26. The method of claim 17, wherein the integratedcircuit device is a communications device.
 27. The method of claim 17,further including selecting the value such that the sample time isadjusted to substantially center a data eye of the data with respect tothe internal receive signal.
 28. An integrated circuit devicecomprising: a receiver circuit to sample data in response to an internalreceive signal; a locked loop circuit to generate the internal receivesignal based on an external clock signal; and a register to store avalue representative of a sampling time adjustment that is applied tothe internal receive signal such that the sample time is adjusted tosubstantially center a data eye of the data with respect to the internalreceive signal, wherein the value is stored in the register duringinitialization of the integrated circuit device.
 29. The integratedcircuit device of claim 28, wherein the locked loop circuit is a phaselocked loop circuit.
 30. The integrated circuit device of claim 28,wherein the locked loop circuit is a delay locked loop circuit.
 31. Theintegrated circuit device of claim 28, wherein the locked loop circuitgenerates the internal receive signal using an external signal thatpropagates along with the data.
 32. The integrated circuit device ofclaim 28, wherein the integrated circuit device is a memory controllerdevices.
 33. The integrated circuit device of claim 28, wherein theintegrated circuit device is a memory device.
 34. The integrated circuitdevice of claim 28, wherein the integrated circuit device is acommunications device.
 35. The integrated circuit device of claim 28,further comprising: a transmitter circuit to transmit data; and aregister to store a value representative of a parameter adjustment thatis applied to the transmitter circuit.
 36. An integrated circuitcontroller device that communicates with a plurality of integratedcircuit memory devices, the integrated circuit controller devicecomprising: a receiver circuit to sample data from an external signalline at a sample time that is indicated by an internal receive signal;and a register to store a value representative of a sampling timeadjustment that is applied to the sample time by adjusting a phase ofthe internal receive signal, wherein the value is determined based oninformation stored in a serial presence detect memory device.
 37. Theintegrated circuit controller device of claim 36, further including alocked loop circuit to generate the internal receive signal.
 38. Theintegrated circuit controller device of claim 36, wherein value isselected such that the sample time is adjusted to substantially center adata eye of the data with respect to the internal receive signal. 39.The integrated circuit controller device of claim 36, wherein the serialpresence detect memory device is associated with a memory module,wherein the plurality of integrated circuit memory devices are disposedon the memory module.
 40. An integrated circuit device comprising: areceiver circuit to sample signals in response to an internal receivesignal; a register to store a value representative of a sampling timeadjustment that is applied to the internal receive signal; a transmittercircuit having an output driver; a register to store a valuerepresentative of a drive strength setting associated with thetransmitter circuit such that the output driver transmits signals inaccordance with the drive strength setting.
 41. The integrated circuitdevice of claim 40, wherein the integrated circuit device is a memorycontroller device.
 42. The integrated circuit device of claim 40,wherein the integrated circuit device is a microprocessor device. 43.The integrated circuit device of claim 40, wherein the integratedcircuit device is a memory device.
 44. The integrated circuit device ofclaim 40, wherein the integrated circuit device is a communicationsdevice.
 45. The integrated circuit device of claim 40, furthercomprising a register to store a value representative of a slew rateadjustment that is applied to the transmitter circuit.
 46. Theintegrated circuit device of claim 40, further comprising a register tostore a value representative of a reference voltage level adjustmentthat is applied to a reference voltage to derive a modified referencevoltage level, wherein the input receiver samples the data using themodified voltage reference level.
 47. An integrated circuit devicecomprising: receiving means for receiving data, sent by a firstintegrated circuit device of a plurality of integrated circuit devices,via an external signal line, wherein the data is sampled from theexternal signal line at a sample time; and register means for storing avalue representative of a sampling time adjustment that is applied tothe sample time, wherein the value is determined by polling asupplemental memory device that stores information specifying aconfiguration of the plurality of integrated circuit devices.
 48. Theintegrated circuit device of claim 47, wherein the supplemental memorydevice is a serial presence detect memory device.
 49. The integratedcircuit device of claim 47, wherein the integrated circuit device is amemory controller devices.
 50. The integrated circuit device of claim47, wherein the integrated circuit device is a microprocessor device.51. The integrated circuit device of claim 47, wherein the integratedcircuit device is a memory device.
 52. The integrated circuit device ofclaim 47, wherein the integrated circuit device is a communicationsdevice.